/********************************************************************
*	MEF an XML UI framework
*	Filename:	MEFPlugin.h
*	Author:		Mikael Eriksson
*
********************************************************************/


#if !defined(_CMEFPLUGIN_H)
#define _CMEFPLUGIN_H

#include "MEFString.h"

class CMEFStringHash;
class CMEFEvent;
class CMEFLayer;

class CMEFPlugin
{
public:
	CMEFPlugin(){iType = "null";}
	virtual ~CMEFPlugin(void){}

	virtual void Create(CMEFLayer* aLayer, CMEFPlugin* aParent) = 0;
	virtual void Init(const CMEFStringHash& aAttributes) = 0;
	virtual void Run() = 0;
	virtual void EventReceived(const CMEFEvent& aEvent) = 0;
	
	virtual CMEFString& Type() {return iType;} 

protected:
	CMEFString iType;
};

#endif //_CMEFPLUGIN_H